# -*- coding: utf-8 -*-
# @Time    : 2024/7/11 10:40
# @Author  : yujiahao
# @File    : 13_fastapi_cookie.py
# @description:Cookie 参数


'''

定义 Cookie 参数与定义 Query 和 Path 参数一样。

Cookie 是一种用于在客户端（通常是浏览器）和服务器之间存储和传递少量数据的机制。它们主要用于以下几个目的：

    1、会话管理：存储用户登录状态、购物车内容等信息，以便在用户浏览网站的不同页面时保持状态。
    2、个性化设置：存储用户的偏好设置，如语言选择、主题颜色等，以便在用户下次访问时提供定制化的体验。
    3、跟踪和分析：用于跟踪用户在网站上的行为，以便进行流量分析和广告投放。
Cookie 的基本概念
    1、名称（Name）：Cookie 的键。
    2、值（Value）：Cookie 的值。
    3、域（Domain）：Cookie 所属的域名。
    4、路径（Path）：Cookie 所属的路径。
    5、过期时间（Expires）：Cookie 的有效期，过期后浏览器会删除该 Cookie。
    6、安全标志（Secure）：如果设置了该标志，Cookie 只会通过 HTTPS 传输。

Cookie 、Path 、Query 是兄弟类，都继承自共用的 Param 类。

注意，从 fastapi 导入的 Query、Path、Cookie 等对象，实际上是返回特殊类的函数。
'''
from typing import Annotated

# 首先，导入 Cookie
from fastapi import FastAPI, Cookie

app = FastAPI()


@app.get('/items/')
async def read_item(
        # 声明 Cookie 参数
        name: str = Cookie('张学友'),
        # 第一个值是默认值，还可以传递所有验证参数或注释参数
        ads_id: Annotated[str | None, Cookie()] = None
):
    return {'name': name, "ads_id": ads_id}
